Skip to content

[pull] master from ruby:master#867

Merged
pull[bot] merged 10 commits intoturkdevops:masterfrom
ruby:master
Mar 20, 2026
Merged

[pull] master from ruby:master#867
pull[bot] merged 10 commits intoturkdevops:masterfrom
ruby:master

Conversation

@pull
Copy link

@pull pull bot commented Mar 20, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

tekknolagi and others added 10 commits March 19, 2026 18:50
(ruby/erb#108)

ruby/erb@2fd0a6b71c

Co-authored-by: Takashi Kokubun <takashikkbn@gmail.com>
* [DOC] Fix links

* [DOC] Fix links
When ZJIT's send fallback (gen_send_without_block) cannot optimize a
Send instruction, it calls rb_vm_opt_send_without_block, which uses
VM_EXEC to execute the callee. VM_EXEC sets VM_FRAME_FLAG_FINISH on
the callee's frame. In the interpreter, the same send is dispatched
inline by vm_exec_core without setting FLAG_FINISH.

This flag difference changes how `throw TAG_RETURN` (used by `return`
inside `rescue`) is processed in vm_exec_handle_exception:

- Without FLAG_FINISH: TAG_RETURN is converted to TAG_BREAK, and
  frame_return_value() returns the actual value (e.g. :f_raise_return)
- With FLAG_FINISH: TAG_RETURN stays as-is, and frame_return_value()
  returns Qnil

This caused TracePoint to report nil instead of the actual return value
for methods like:

    def f_raise
      raise
    rescue
      return :f_raise_return
    end

Fix by skipping ZJIT compilation while ISEQ trace events are active,
so methods fall back to the interpreter which handles sends inline.
Instead of blocking compilation entirely when tracing is active,
emit counted side exits in HIR before send fallback instructions
that use VM_EXEC (which sets FLAG_FINISH on the callee frame,
breaking throw TAG_RETURN semantics). This gives us runtime stats
on how often tracing causes side exits while still allowing
compilation.

The tracing check is done at HIR construction time so that Send
fallback instructions are never emitted into the IR when tracing
is active, replaced by SideExit instructions instead.

Affected YARV instructions: opt_neq, opt_send_without_block (and
all opt_* variants), send, sendforward, invokesuper,
invokesuperforward, invokeblock.
Bumps the github-actions group with 1 update in the / directory: [taiki-e/install-action](https://github.com/taiki-e/install-action).


Updates `taiki-e/install-action` from 2.68.36 to 2.69.2
- [Release notes](https://github.com/taiki-e/install-action/releases)
- [Changelog](https://github.com/taiki-e/install-action/blob/main/CHANGELOG.md)
- [Commits](taiki-e/install-action@3a91142...42721de)

---
updated-dependencies:
- dependency-name: taiki-e/install-action
  dependency-version: 2.69.2
  dependency-type: direct:production
  update-type: version-update:semver-minor
  dependency-group: github-actions
...

Signed-off-by: dependabot[bot] <support@github.com>
rb_ivar_get can raise Ractor::IsolationError for class/module ivars
from non-main Ractors. Without gen_prepare_non_leaf_call, the frame
state is not properly set up when the exception is raised, which can
lead to crashes or incorrect behavior during exception handling.
@pull pull bot locked and limited conversation to collaborators Mar 20, 2026
@pull pull bot added the ⤵️ pull label Mar 20, 2026
@pull pull bot merged commit a5e2cbc into turkdevops:master Mar 20, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants